import telebot
from telebot import types
from search_func import paper, reports, news
from data_func import search, group, User, get, data
from biblio import bibliography
from config import botToken

def write_id(user_id):
    if not found_id(user_id):
        file = open("id_array.txt", "a")
        file.write(str(user_id) + "\n")
        file.close()

def found_id(user_id):
    user_id = str(user_id)
    file = open("id_array.txt", "r")
    id_array = file.read().split("\n")
    for id in id_array:
        if id == user_id:
            file.close()
            return True
    file.close()
    return False

level = 0


bot = telebot.TeleBot(botToken)

def create_button(keyboard, text, callback_data):

    button = types.InlineKeyboardButton(text=text, callback_data=callback_data)
    keyboard.add(button)
    

user_states = {} # Внутри какого пункта меню находится пользователь
ZERO, START, NAME, AGE, GROUP, BIBLIO = range(6)


@bot.message_handler(commands=['start'])
def start(message):
    user_states[message.chat.id] = ZERO
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn1 = types.KeyboardButton("Работа с текстом")
    btn3 = types.KeyboardButton("Интересная информация")
    btn4 = types.KeyboardButton("Я и другие люди")
    markup.add(btn1, btn3, btn4 )
    bot.send_message(message.chat.id, text="Привет, {0.first_name}! Я ассистент исследователя. Помогу тебе в ежедневных научно-исследовательских делах.".format(message.from_user), reply_markup=markup)


def set_state(chatId, state):
    user_states[chatId] = state

@bot.message_handler(content_types=['text'])
def text_reactions(message):

    if message.text == "Работа с текстом":
        keyboard = types.InlineKeyboardMarkup()
        create_button(keyboard, "Проверка на тематику [в разработке]", "/check")
        create_button(keyboard, "Рецензирование [в разработке]", "/reviewing")
        create_button(keyboard, "Резюмирование [в разработке]", "/summary")
        create_button(keyboard, "Документ по образцу [в разработке]", "/document")
        create_button(keyboard, "Письмо по образцу [в разработке]", "/letter")
        create_button(keyboard, "Оформление библиографии", "/bibliography")
        bot.send_message(message.chat.id, "Выберете действие:", reply_markup=keyboard)
    elif message.text == "Интересная информация":
        keyboard = types.InlineKeyboardMarkup()
        create_button(keyboard, "Подбор статей [в разработке]", "/paper")
        create_button(keyboard, "Интересные доклады [в разработке]", "/reports")
        create_button(keyboard, "Новостной дайджест [в разработке]", "/news")
        bot.send_message(message.chat.id, "Выберете действие:", reply_markup=keyboard)
    elif message.text == "Я и другие люди":
        print("I and over")
        keyboard = types.InlineKeyboardMarkup()
        create_button(keyboard, "Изменить информацию о себе [experimental]", "/myself")
        create_button(keyboard, "Искать людей по тематике [в разработке]", "/search")
        create_button(keyboard, "Добавить человека в группу [в разработке]", "/group")
        bot.send_message(message.chat.id, "Выберете действие:", reply_markup=keyboard)
    else:
        chat_id = message.chat.id
        state = user_states.get(chat_id)
        print(state)
        if state == START:
            user = User(message.from_user.id, message.text)
            user.save(data)
            bot.send_message(chat_id, "Отлично! Теперь введите свой возраст.")
            user_states[chat_id] = NAME
            print(message.text)
        elif state == NAME:
            keyboard = types.InlineKeyboardMarkup()
            user = get(message.from_user.id)
            user.age = message.txt
            user.save()
            user_states[chat_id] = AGE
            print(message.text)
        elif state == AGE:
            user = get(message.from_user.id)
            user.lab = message.txt
            user.save()
            bot.send_message(chat_id, " Опишите ваших научных работ")
            user_states[chat_id] = GROUP
            print(message.text)
        elif state == GROUP:
            user = get(message.from_user.id)
            user.res_dir = message.txt
            user.save()
            bot.send_message(chat_id, "Укажите вашу должность")
            user_states[chat_id] = START
            print(message.text)
        elif state == BIBLIO:
            bibliography(bot, chat_id, message.text)



@bot.callback_query_handler(func=lambda call: True)
def callback_handler(call):
    if call.data == "/test":
        keyboard = types.InlineKeyboardMarkup()
        create_button(keyboard, "Нажми меня", "/test")
        bot.send_message(call.message.chat.id, "Вы нажали на кнопку!", reply_markup=keyboard)

    elif call.data == "/check":
        notReady(bot, call.message.chat.id)
    elif call.data == "/reviewing":
        notReady(bot, call.message.chat.id)
    elif call.data == "/summary":
        notReady(bot, call.message.chat.id)
    elif call.data == "/document":
        notReady(bot, call.message.chat.id)
    elif call.data == "/letter":
        notReady(bot, call.message.chat.id)
    elif call.data == "/bibliography":
        set_state(call.message.chat.id, BIBLIO)
        bibliography(bot, call.message.chat.id, None)
    elif call.data  == "/paper":
        notReady(bot, call.message.chat.id) #paper()
    elif call.data == "/reports":
        notReady(bot, call.message.chat.id) #reports()
    elif call.data == "/news":
        notReady(bot, call.message.chat.id) #news()
    elif call.data == "/myself":
        print("again")
        if not user_states[call.message.chat.id] == AGE:
           user_states[call.message.chat.id] = START
           bot.send_message(call.message.chat.id, "Введите свое имя:")
    elif call.data == "/search":
        notReady(bot, call.message.chat.id) #search()
    elif call.data == "/group":
        notReady(bot, call.message.chat.id) #group()

def notReady(bot, chatId):
    bot.send_message(chatId, "Эта функциональность еще не готова")



if __name__ == '__main__':
    bot.infinity_polling()

